Logical address offset in response to detecting a memory formatting operation

ABSTRACT

The present disclosure includes methods, devices, and systems for a logical address offset. One method embodiment includes detecting a memory unit formatting operation. Subsequently, in response to detecting the formatting operation, the method includes inspecting format information on the memory unit, calculating a logical address offset, and applying the offset to a host logical address.

PRIORITY APPLICATION INFORMATION

This application is a Continuation of U.S. application Ser. No.12/356,765, filed Jan. 21, 2009, which is incorporated herein byreference.

TECHNICAL FIELD

The present disclosure relates generally to semiconductor memorydevices, methods, and systems, and more particularly, to a logicaladdress offset.

BACKGROUND

Memory devices are typically provided as internal, semiconductor,integrated circuits in computers or other electronic devices. There aremany different types of memory including volatile and non-volatilememory. Volatile memory can require power to maintain its data andincludes random-access memory (RAM), dynamic random access memory(DRAM), and synchronous dynamic random access memory (SDRAM), amongothers. Non-volatile memory can provide persistent data by retainingstored information when not powered and can include NAND flash memory,NOR flash memory, read only memory (ROM), Electrically ErasableProgrammable ROM (EEPROM), Erasable Programmable ROM (EPROM), and phasechange random access memory (PCRAM), among others.

Memory devices can be combined together to form a solid state drive(SSD). A solid state drive can include non-volatile memory, e.g., NANDflash memory and NOR flash memory, and/or can include volatile memory,e.g., DRAM and SRAM, among various other types of non-volatile andvolatile memory.

An SSD can be used to replace hard disk drives as the main storagedevice for a computer, as the solid state drive can have advantages overhard drives in terms of performance, size, weight, ruggedness, operatingtemperature range, and power consumption. For example, SSDs can havesuperior performance when compared to magnetic disk drives due to theirlack of moving parts, which may avoid seek time, latency, and otherelectro-mechanical delays associated with magnetic disk drives. SSDmanufacturers can use non-volatile flash memory to create flash SSDsthat may not use an internal battery supply, thus allowing the drive tobe more versatile and compact.

An SSD can include a number of memory devices, e.g., a number of memorychips (as used herein, “a number of” something can refer to one or moreof such things, e.g., a number of memory devices can refer to one ormore memory devices). The collection of memory devices on an SSD can bereferred to as a memory unit. As one of ordinary skill in the art willappreciate, a memory chip can include a number of dies. Each die caninclude a number of memory arrays and peripheral circuitry thereon. Thememory arrays can include a number of memory cells organized into anumber of physical blocks, and the physical blocks can be organized intoa number of pages.

Some format utilities may be unaware of the physical characteristics ofthe memory arrays that make up an SSD. Thus, when an SSD is formattedwith such a utility for a particular file system, the memory unit may bedivided into a number of areas, each having a starting logical addressthat may or may not correspond to a physical boundary such as a page orblock of memory cells. For example, a user data area of the file systemmay have a starting logical block address that can map to the middle ofa page or block of memory cells.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional block diagram of an electronic memory system thatcan be operated in accordance with one or more embodiments of thepresent disclosure.

FIG. 2 is a functional block diagram of a memory controller inaccordance with one or more embodiments of the present disclosure.

FIG. 3 illustrates a diagram of a portion of a memory device inaccordance with one or more embodiments of the present disclosure.

FIG. 4 illustrates a block diagram of a memory unit formatted with afile system in accordance with one or more embodiments of the presentdisclosure.

DETAILED DESCRIPTION

The present disclosure includes methods, devices, and systems for alogical address offset. One method embodiment includes detecting amemory unit formatting operation. Subsequently, in response to detectingthe formatting operation, the method includes inspecting formatinformation on the memory unit, calculating a logical address offset,and applying the offset to a host logical address.

In the following detailed description of the present disclosure,reference is made to the accompanying drawings that form a part hereof,and in which is shown by way of illustration how one or more embodimentsof the disclosure may be practiced. These embodiments are described insufficient detail to enable those of ordinary skill in the art topractice the embodiments of this disclosure, and it is to be understoodthat other embodiments may be utilized and that process, electrical,and/or structural changes may be made without departing from the scopeof the present disclosure. As used herein, the designators “N,” “M,”“R,” and “S,” particularly with respect to reference numerals in thedrawings, indicates that a number of the particular feature sodesignated can be included with one or more embodiments of the presentdisclosure.

The figures herein follow a numbering convention in which the firstdigit or digits correspond to the drawing figure number and theremaining digits identify an element or component in the drawing.Similar elements or components between different figures may beidentified by the use of similar digits. For example, 101 may referenceelement “01” in FIG. 1, and a similar element may be referenced as 201in FIG. 2. As will be appreciated, elements shown in the variousembodiments herein can be added, exchanged, and/or eliminated so as toprovide a number of additional embodiments of the present disclosure. Inaddition, as will be appreciated, the proportion and the relative scaleof the elements provided in the figures are intended to illustrate theembodiments of the present invention, and should not be taken in alimiting sense.

FIG. 1 is a functional block diagram of a computing system 100 includinga memory system 120 in accordance with one or more embodiments of thepresent disclosure. In the embodiment illustrated in FIG. 1, the memorysystem 120, e.g., a solid state drive (SSD), can include a memorycontroller 101, a host interface connector 103, and one or more solidstate memory devices 130-1, . . . , 130-N. The solid state memorydevices 130-1, . . . , 130-N are collectively referred to herein as amemory unit 132. A file system can be formatted to the memory unit 132such that the memory unit 132 can provide a storage volume for datastorage. In one or more embodiments, the memory system 120, includingthe host interface connector 103, the memory unit 132, and the memorycontroller 101 can be part of a discrete memory module, e.g., a printedcircuit board.

As illustrated in FIG. 1, the memory controller 101 can be coupled tothe host interface connector 103 and to the solid state memory devices130-1, . . . , 130-N. The host interface connector 103 can be used tocommunicate information between the memory system 120 and another devicesuch as a host system 102. Host system 102 can include a memory accessdevice, e.g., a processor. One of ordinary skill in the art willappreciate that “a processor” can intend one or more processors, such asa parallel processing system, a number of coprocessors, etc. Examples ofhost systems include laptop computers, personal computers, digitalcameras, digital recording and playback devices, mobile telephones,PDAs, memory card readers, interface hubs, and the like. For one or moreembodiments, the host interface connector 103 can be in the form of astandardized interface. For example, when the memory system 120 is usedfor data storage in a computing system 100, the host interface connector103 can be a serial advanced technology attachment (SATA), peripheralcomponent interconnect express (PCIe), or a universal serial bus (USB),among other connectors and interfaces. In general, however, hostinterface connector 103 can provide an interface for passing control,address, data, and other signals between the memory system 120 and ahost system 102 having compatible receptors for the host interfaceconnector 103.

The memory controller 101 can communicate with the solid state memorydevices 130-1, . . . , 130-N to read, write, and erase data, among otheroperations. Memory controller 101 can have circuitry that may be one ormore integrated circuits and/or discrete components. For one or moreembodiments, the circuitry in memory controller 101 may include controlcircuitry for controlling access across the solid state memory devices130-1, . . . , 130-N and circuitry for providing a translation layerbetween a host system 102 and the memory system 120. Thus, a memorycontroller could selectively couple an I/O connection (not shown inFIG. 1) of a solid state memory device 130-1, . . . , 130-N to receivethe appropriate signal at the appropriate I/O connection at theappropriate time. Similarly, the communication protocol between a hostsystem 102 and the memory system 120 may be different than what isrequired for access of a solid state memory device 130-1, . . . , 130-N.Memory controller 101 could then translate the commands received from ahost into the appropriate commands to achieve the desired access to asolid state memory device 130-1, . . . , 130-N.

A solid state memory device 130-1, . . . , 130-N can include one or morearrays of memory cells, e.g., non-volatile memory cells. The arrays canbe flash arrays with a NAND architecture, for example. In a NANDarchitecture, the control gates of memory cells of a “row” can becoupled with a word line, while the memory cells can be coupled inseries source to drain in a “string” between a select gate sourcetransistor and a select gate drain transistor. The string can beconnected to a bit line by the select gate drain transistor. The use ofthe terms “row” and “string” implies neither a linear nor an orthogonalarrangement of memory cells. As will be appreciated by those of ordinaryskill in the art, the manner of connection of the memory cells to thebit lines and source lines depends on whether the array is a NANDarchitecture, a NOR architecture, or some other memory arrayarchitecture.

The embodiment of FIG. 1 can include additional circuitry that is notillustrated so as not to obscure embodiments of the present disclosure.For example, the memory system 120 can include address circuitry tolatch address signals provided over I/O connections through I/Ocircuitry. Address signals can be received and decoded by a row decoderand a column decoder to access the solid state memory devices 130-1, . .. , 130-N. It will be appreciated by those skilled in the art that thenumber of address input connections can depend on the density andarchitecture of the solid state memory devices 130-1, . . . , 130-N.

FIG. 2 is a functional block diagram of a memory controller 201 inaccordance with one or more embodiments of the present disclosure.Memory controller 201 can be analogous to memory controller 101illustrated in FIG. 1. Memory controller 201 includes a host interface(I/F) 204 that can interface with a host system, e.g., through a hostinterface connector 103 illustrated in FIG. 1. The host I/F is coupledto control circuitry 208 and controller memory 210 of the memorycontroller 201. The control circuitry 208 can be coupled to thecontroller memory 210 and to a comparator 214. The controller memory 210can be coupled to an adder 212. The comparator 214 and adder 212 can becoupled together and to a memory unit interface (I/F) 206. The memorycontroller can be coupled to a memory unit, e.g., memory unit 132illustrated in FIG. 1, through the memory unit I/F 206.

Memory controller 201 can include additional components not illustratedhere so as not to obscure embodiments of the present disclosure.Furthermore, memory controller 201 can have differing arrangements ofthe illustrated components without departing from the scope of thepresent disclosure. Memory controller 201 may take the form of anintegrated circuit, where the components illustrated in FIG. 2 representthe functionality of the integrated circuit, or the memory controller201 can be a combination of discrete components.

Host I/F 204 can send signals to and/or receive signals from a hostsystem, e.g., host system 102 in FIG. 1. Memory unit I/F 206 can sendsignals to and/or receive signals from a memory unit, e.g., memory unit132 in FIG. 1. Control circuitry 208 can decode signals provided from ahost system via host I/F 204. These signals can include various reading,writing, erasing, or other operating signals for the memory unit.Controller memory 210 can be memory local to the controller 201 and canbe either volatile or non-volatile memory such as DRAM, EPROM, EEPROM,flash, etc. Controller memory 210 can be configured to store one or morelogical address offsets as described herein. It will be appreciated bythose skilled in the art that additional circuitry and control signalscan be provided, and that the device detail of FIG. 2 has been reducedto facilitate illustration.

Comparator 214 can include one or more logical address range comparatorsconfigured to compare a host logical address with a range of logicaladdresses corresponding to a number of areas of a formatted file systemon a memory unit. For example, the comparator 214 can be used todetermine whether a host logical address is within a range of logicaladdresses corresponding to a user data area, as described in more detailherein. As will be appreciated, a host logical address can be a hostlogical block address (LBA), which is described in more detail herein.For ease of reference, the term “host LBA” will be used herein and doesnot exclude the use of other types of host logical addresses with one ormore embodiments of the present disclosure.

Adder 212 can be configured to add an offset, e.g., an offset stored incontroller memory 210, to a logical address received via host I/F 204.In one or more embodiments, the adder 212 can add the offset to the hostLBA prior to the host LBA being sent across the memory unit I/F 206.

Controller 201 can be configured such that control circuitry 208 cancalculate a logical address offset and store the offset in controllermemory 210. For example, one or more logical address offsets can bestored in memory 210 until the control circuitry 208 detects aformatting operation. The controller 201 can receive host LBAs from thehost I/F 204, e.g., in response to a host system attempting to access aportion of a memory unit associated with the host LBAs. When comparator214 detects a host LBA within a particular range of addresses, e.g., arange corresponding to a user data area of a file system, the adder 212can add the offset to the host LBA and pass the offset host LBA acrossthe memory unit I/F 206. Such operations performed by controller 201 maybe transparent to the host system and are discussed in more detailherein.

In one or more embodiments, various physical parameters associated withthe memory unit, e.g., according to inspected format information, can bestored in controller memory 210 and can be communicated to controlcircuitry 208. Examples of physical parameters include memory unit size,page size, block size, file system type, media type, and memory celltype, among other parameters.

FIG. 3 illustrates a diagram of a portion of a memory device 330 inaccordance with one or more embodiments of the present disclosure.Although not shown in FIG. 3, one of ordinary skill in the art willappreciate that the memory device 330 can be located on a semiconductordie along with various peripheral circuitry associated with theoperation thereof. Memory device 330 can include one or more arrays ofmemory cells.

As shown in FIG. 3, memory device 330 can include a number of physicalblocks 340-0 (BLOCK 0), 340-1 (BLOCK 1), . . . , 340-M (BLOCK M) ofmemory cells. In the example shown in FIG. 3, the indicator “M” is usedto indicate that the memory device 330 can include a number of physicalblocks. As an example, the number of physical blocks in memory device330 may be 128 blocks, 4,096 blocks, or 32,768 blocks, howeverembodiments are not limited to a particular number or multiple ofphysical blocks in a memory device. Further, embodiments are not limitedto the type of memory used in the array, e.g., non-volatile, volatile,etc. In the embodiment illustrated in FIG. 3, the memory device 330 canbe, for example, a NAND flash memory device 330 such that, for example,the memory cells in each physical block 340-0, 340-1, . . . , 340-M canbe erased together as a unit, e.g., the cells in each physical block canbe erased in a substantially simultaneous manner. For instance, thecells in each physical block can be erased together in a single erasingoperation.

The indicator “R” is used to indicate that a physical block, e.g.,340-0, 340-1, . . . , 340-M, can include a number of rows. In someembodiments, the number of rows, e.g., word lines, in each physicalblock can be 32, but embodiments are not limited to a particular numberof rows 350-0, 350-1, . . . , 350-R per physical block. As one ofordinary skill in the art will appreciate, each row 350-0, 350-1, . . ., 350-R can include one or more physical pages, e.g., an even page andan odd page. A physical page refers to a unit of writing and/or reading,e.g., a number of cells that are written and/or read together or as afunctional group of memory cells. Accordingly, an even page and an oddpage can be written and/or read with separate writing and/or readingoperations. For embodiments including multilevel cells (MLC), a physicalpage can be logically divided into an upper page and a lower page ofdata. For example, one memory cell can contribute one or more bits to anupper page of data and one or more bits to a lower page of data.Accordingly, an upper page and a lower page of data can be writtenand/or read as part of one writing and/or reading operation, as thelogical upper page and logical lower page are both part of the samephysical page. For ease of illustration, each row 350-0, 350-1, . . . ,350-R, in FIG. 3 includes only one physical and logical page, howeverembodiments are not so limited.

In one or more embodiments of the present disclosure, and as shown inFIG. 3, a page can store data in a number of sectors 352-0, 352-1, . . ., 352-S. The indicator “S” is used to indicate that a page can include anumber of sectors. Each sector 352-0, 352-1, . . . , 352-S can storesystem and/or user data and can include overhead information, such aserror correction code (ECC) information, and logical block address (LBA)information. As one of ordinary skill in the art will appreciate,logical block addressing is a scheme that can be used by a host foridentifying a sector of information, e.g., each sector can correspond toa unique LBA. In one or more embodiments, a sector is the smallestaddressable portion of a storage volume. As an example, a sector of datacan be a number of bytes of data, e.g., 256 bytes, 512 bytes, or 1,024bytes. For example, an SSD can have 4, 8, or 16 sectors in a page, wherea sector can be 512 bytes, and an SSD can have 128, 256, or 512 pagesper physical block, therefore physical block sizes are 131072 bytes,262144 bytes, and 524288 bytes. Embodiments are not limited to theseexamples.

It is noted that other configurations for the physical blocks 340-0,340-1, . . . , 340-M, rows 350-0, 350-1, . . . , 350-R, sectors 352-0,352-1, . . . , 352-S, and pages are possible. For example, the rows350-0, 350-1, . . . , 350-R of the physical blocks 340-0, 340-1, . . . ,340-M can each store data corresponding to a single sector which caninclude, for example, more or less than 512 bytes of data.

FIG. 4 illustrates a block diagram of a memory unit formatted with afile system 460 in accordance with one or more embodiments of thepresent disclosure. As described herein, the formatted memory unit canprovide a storage volume. Although the embodiment illustrated in FIG. 4includes a file allocation table (FAT) file system, embodiments of thepresent disclosure are not limited to a particular type of file system.For example, one or more embodiments of the present disclosure can beused with other file systems such as New Technology File System (NTFS),Unix File System (UFS), Universal Disk Format (UDF), etc. In one or moreembodiments, the memory unit formatted with the file system 460 caninclude a system data area 461 and a user data area 462. The system dataarea 461 can include format information, e.g., “metadata” 465, thatrelates to the structure and operation of the file system 460. In theembodiment illustrated in FIG. 4, the system data area 461 includes anumber of sections such as a partition boot record 464, a reserved area466, a first file allocation table 468, a second file allocation table470, and a root directory 472.

Partition boot record (PBR) 464 is illustrated as the first area in thefile system 460. PBR 464 can include either or both of a master bootrecord and a volume boot record. For example, PBR 464 can include codefor booting an operating system or other programs stored in other areasof the storage volume. The PBR 464 can include format information, e.g.,file system metadata 465. Format information, e.g., file system metadata465, can include physical parameters, such as memory size, page size,block size, file system type, media type, memory cell type, and sizesand/or starting addresses of a number of sections of the file system,among other parameters. Although metadata 465 is illustrated as beingwithin the PBR 464, embodiments are not so limited. For example,metadata 465 can be located in one or more other sections of the systemdata area 461. File system metadata 465 may include information that canallow identification of the type of file system that contains themetadata.

The reserved area 466 may generally be left empty. Some applicationsthat may use reserved area 466 include multi-boot loaders, securityapplications, etc.

File allocation tables 468 and 470, can contain a list of entries thatmap to each addressed portion of the user data area 462. Such addressedportions may be referred to as allocation units, e.g., clusters. As someoperating systems for computing devices may be designed to work withstorage volumes on hard disk drives, such operating systems may useclusters as allocation units, where the cluster is a number ofsequential track sectors on the disk. Using a cluster as an allocationunit for a solid state memory device, however, does not require thatportions of the cluster, e.g., a number of sectors, be continuous. Thefile allocation tables 468 and 470 can contain information about whichportions of the user data area 462 have data stored, are free, arepossibly unusable, and where data is stored in the memory unit. Invarious embodiments, two file allocation tables can store redundantinformation such that one can act as a backup for a potential failure ofthe other file allocation table, e.g., File Allocation Table 2 can be aredundant copy of File Allocation Table 1.

Root directory 472 can contain file and/or directory information such asname, type, creation information, size, address of the first portion ofthe file and/or directory, and other information. A dedicated rootdirectory 472, as illustrated in FIG. 4, may generally be used withFAT12 and FAT16 file systems. Other file systems, FAT32 for example, maystore information associated with the root directory 472 in the userdata area 462.

In the embodiment illustrated in FIG. 4, user data can be data receivedfrom a host system, such as host system 102 shown in FIG. 1. User datacan be written to, read from, and erased from user data area 462 anumber of times. In one or more embodiments, the end 476 of the systemdata area 461 and/or the beginning 476 of the user data area 462 can beadjacent to each other by logical addresses. For example, if the endinglogical address of the system data area 461 is 0020 then the startinglogical address of the user data area 462 is 0021. Thus, the offset 474,as illustrated in FIG. 4, can be within the user data area 462. Theoffset 474 is described in more detail herein.

Prior to use for data storage, a memory unit can be formatted such thatdata structures are installed that both organize the memory unit andprovide an abstraction layer to the host. The abstraction layer providedby formatting allows different capacity devices, different media types,and different interface types to provide the host with a common methodof access to the memory unit. Formatting the memory unit can includewriting PBR data including file system metadata 465, where the PBR 464can allocate space in the memory unit for system data and user data.

A memory controller, e.g., memory controller 101 in FIG. 1, can detectthe memory unit formatting operation and inspect metadata 465 associatedwith the file system 460 formatted to the memory unit. Subsequently, inresponse to detecting the formatting operation, the memory controllercan determine a starting logical address 476 of a user data area 462 ofthe memory unit according to the file system metadata 465. Thecontroller can calculate a logical address offset 474, which, as appliedto the starting logical address of the user data area 462 corresponds toa beginning of one or more of a physical page of memory cells, e.g., aphysical page boundary, and a physical block of memory cells, e.g., aphysical block boundary. In one or more embodiments, the logical addressoffset 474 can be equal to the difference in logical addresses betweenan end 476 of the system data area 461 and a beginning 478 of asubsequent one or more of a physical page of memory cells and a physicalblock of memory cells. For example, if the last logical addressassociated with the system data area 461 is 0030 and the logical addressassociated with the beginning of the next block is 0032, then thelogical address offset 474 is 0002. The calculated logical addressoffset 474 can be saved in a memory, e.g., a non-volatile memory, of thecontroller for subsequent use.

The controller can apply the logical address offset 474 to a host LBAthat is equal to or greater than the starting address of the user dataarea 462. In one or more embodiments, the controller can apply thelogical address offset 474 to all host LBAs that are equal to or greaterthan the starting address of the user data area 462. As such, an addressthat the host attempts to access, e.g., write, read, or erase, withinthe user data area 462 can have the offset applied to it. The host maynot have knowledge of the offset being applied and may operateaccordingly. However, the controller can apply the offset to user datalogical addresses such that the effective beginning of the user dataarea 462 is offset to a beginning of one or more of a physical page ofmemory cells and a physical block of memory cells, e.g., a page and/orblock boundary. Applying the logical address offset 474 to host LBAs caninclude adding the offset 474 to logical addresses accessed by the hostin the user data area 462.

In one or more embodiments, the controller can use page size, blocksize, and/or file system metadata 465 to calculate an offset 474. Thecontroller can use knowledge of the organization of the memory unit, inparticular, the write or erase size, the number of sectors in a page,the number of pages in a block, metadata 465, the location of sectionsof the file system 460, and the file system 460 type to calculate theoffset 474. The use of offset 474 can align the start of the user data462 section with a page and/or block boundary. In one or moreembodiments, as described herein, offsets can be calculated for othersections of the file system 460, e.g., PBR 464, reserved section 466,FAT1 468, FAT2 470, root directory 472, etc. As such, the beginning ofone or more of the sections of the file system 460 can be aligned with apage and/or block boundary.

The user data area 462 can be quantitized to “allocation units,” where anumber of logical blocks are represented or allocated by a singleallocation entry, called an allocation unit. An allocation unit can bethe smallest amount of space that can be allocated to store a singlefile. An allocation unit can include one or more sectors. For example,FAT type file systems may organize the allocation units into groups of512 byte sectors in increasing powers of 2, starting with a 1:1allocation unit to logical block mapping for smaller capacity devices,up to 64 sectors per allocation unit, or more. As each sector has aunique LBA, addressing for allocation units can employ a modulus. Forexample, in the case of 64 sectors per allocation unit, accesses by thehost will occur at addresses that have a modulus of 64. According to oneor more embodiments of the present disclosure, the logical addressoffset 474 can be used to align the starting address of user data, e.g.,the beginning of user data 478 with an allocation unit boundary of thefile system 460. In one or more embodiments, the allocation unitboundary can be a cluster boundary.

A physical sector of a memory system can correspond to a logical sectorand can include overhead information, such as error correction code(ECC) information, and logical block address (LBA) information, as wellas user data. As one of ordinary skill in the art will appreciate,logical block addressing is a scheme often used by a host foridentifying a logical sector of information. As an example, eachphysical sector can store information representing a number of bytes ofdata, e.g., 256 bytes, 512 bytes, or 1,024 bytes, among other numbers ofbytes. However, embodiments of the present disclosure are not limited toa particular number of bytes of data stored in a physical sector orassociated with a logical sector.

Applying a logical address offset to host LBAs within the user data areain accordance with one or more embodiments of the present disclosure canreduce the amount of operating overhead associated with writing and/orerasing data in some instances. With respect to writing, overhead canrefer to data associated with a number of additional memory cells thatare copied or moved in addition to the data written to the memory cellsaddressed by a write command. With respect to erasing, overhead canrefer to data associated with a number of memory cells that are copiedor moved in order to retain the data that is not intended to be erased.For example, if the end 476 of the system data area 461 coincides withthe beginning 478 of user data, as may be the case in some previousapproaches, e.g., if a logical address offset is not used, then systemdata and user data may be written to the same page and/or block. Forsuch a block, an erase operation for either system data or user data inthe block would include erasing both system and user data. For such apage, a writing operation for either system or user data would includemoving or copying the system or user data not being written. Thereduction in overhead according to one or more embodiments of thepresent disclosure can be based at least partially on providing a pageand/or block boundary separation between system data and user data suchthat writing and/or erasing operations performed on system data or userdata near the boundary will affect only the targeted system or userdata.

In one or more embodiments, applying a logical address offset to hostLBAs accessing the user data area 462 can complement wear leveling thatcan be implemented to control the wear rate of a memory unit, e.g.memory unit 132 in FIG. 1. In various embodiments, wear leveling caninclude dynamic wear leveling to minimize the amount of valid blocksmoved to reclaim a block. Dynamic wear leveling can include a techniquecalled garbage collection in which blocks with a number of invalid pages(i.e., pages with data that has been re-written to a different pageand/or is no longer needed on the invalid pages) are reclaimed byerasing the block. Static wear leveling includes writing static data toblocks that have high erase counts to prolong the life of the block. Asone of ordinary skill in the art will appreciate, wear leveling canincrease the life of solid state memory since solid state memory canexperience failure after a number of write and/or erase cycles. Applyinga logical address offset to host LBAs accessing the user data area 462can help reduce overhead, as described herein, and thereby reduce theoverall number of writing and/or erasing operations near the end 476 ofthe system data area 461 and the beginning 478 of user data.

In one or more embodiments, the controller can inspect metadata 465,determine the starting logical address of the user data area 462, andcalculate the logical address offset 474 during and/or in response to aformatting operation and before any user data is written to the userdata area 462. Such embodiments can be useful to help prevent thelogical address offset 474 from being applied to host LBAs in instanceswhere user data had been written to the user data area 462 before thelogical address offset 474 was calculated. In such instances,calculating a logical address offset 474 and applying it to host LBAscould result in an inability to recover the user data written prior tocalculation of the offset. That is, a host LBA attempting to access thepreviously written user data could have the offset applied to it andcould yield a starting logical address different than the startinglogical address of the previously written user data. For example, if thepreviously written user data started at logical address 0050, andsubsequently, a logical address offset of 0008 were calculated, futureattempts by the host system to access the previously written user dataat 0050 would result in accesses to logical address 0058 by applicationof the offset.

An example of a situation where such circumstances could arise is thatof a memory unit where format operations are not monitored or detectedand a logical address offset is calculated at power on. In such anexample, the device would use the logical address offset calculated atpower on while a new format was being applied. Without dynamicallymonitoring and detecting the format operation, upon the next powercycle, the device would calculate a new logical address offset, and ifthe newly calculated offset was different than the logical addressoffset that was active during the format operation, the file systemwould be corrupted.

According to one or more embodiments of the present disclosure, logicaladdress offsets are calculated and applied subsequent to detection of aformatting operation to help prevent such circumstances. Likewise,according to one or more embodiments of the present disclosure, thememory unit can be operated without using a logical address offset 474prior to detecting a formatting operation. Such embodiments may beparticularly useful in instances where a controller according to thepresent disclosure operates a memory unit that had previously beenformatted and controlled without the use of a logical address offset.

In one or more embodiments, a memory controller can be configured todetect whether user data has been written to a user data area 462 of amemory unit in response to being coupled with the memory unit. In suchembodiments, the controller can be configured to operate the memory unitusing a default logical address offset and/or an existing saved logicaladdress offset 474 in response to detecting that user data hadpreviously been written to the user data area 462. For example, adefault logical address offset could be 0 such that as applied to hostLBAs, the default logical address offset does not alter host LBAs. Suchembodiments can be beneficial as described above for helping to preventdata access errors, among other benefits.

The logical address offset 474 can be saved in memory, e.g.,non-volatile memory, of the controller, for example, in memory 210 ofcontroller 201 in FIG. 2. Accordingly, the same logical address offset474 can be applied to logical addresses accessed by the host within theuser data area 462 until a subsequent formatting operation is detected.As described herein, such embodiments can be beneficial in helping toensure that data can be accessed correctly. For example, if a logicaladdress offset 474 is used for host LBAs within a user data area 462,the same offset can be used for the file system 460 throughout operationof the memory unit. If a different offset were used without reformattingthe storage volume of the memory unit, data access errors could occur asthe host system may be unaware of the offset.

In one or more embodiments, a number of sections of the system data area461, e.g., the PBR 464, the reserved area 466, FAT1 468, FAT2 470,and/or the root directory 472, can be aligned with a physical pageand/or physical block boundary. Accordingly, although not illustrated inFIG. 4, a number of additional logical address offsets for a number ofsections of the system data area 461 can be calculated by the controllerafter detecting a formatting operation using file system 460 metadata465. As used herein, an “additional” logical address offset is a logicaladdress offset other than the logical address offset 474 for the userdata area 462. An additional logical address offset that is calculatedby the controller can be saved in memory, e.g., non-volatile memory, ofthe controller as is the case with the logical address offset 474 forthe user data area 462. That is, in one or more embodiments, thecontroller memory can store more than one logical address offset. Thecontroller can determine a starting address of a number of sections ofthe system data area 461. An additional logical address offset for aparticular section of the system data area 461 can be applied to a hostLBA accessing the particular section such that data associated with theparticular section starts at a physical page and/or physical blockboundary. For example a logical address offset for FAT1 468 can beapplied by the controller to a host LBA within FAT1 468.

In one or more embodiments, control circuitry in a controller, such ascontroller 101, for example, can communicate commands to a memory unitsuch that data is written to the memory unit in a particular manner. Thecommands from control circuitry in the controller can be configured towrite data at the beginning of a page for the data that is associatedwith a particular command by calculating an applying an offset to hostLBAs. Also, in one or more embodiments, commands from the controlcircuitry in the controller can be configured to write data at a firstpage of a physical block, e.g., physical block boundary, when writingdata to an erased block by calculating an applying an offset to hostLBAs. In one or more embodiments, the command from the controller canwrite data to the first memory cell of a page, e.g., page boundary, of amemory array and/or by writing data to the beginning of an empty, e.g.,erased, page by calculating an applying an offset to host LBAs. Suchembodiments can reduce instances of data erasing and rewriting becausehost LBAs will be offset to start at the beginning of a physical pageand/or physical block, which does not require moving or copying sectorsin a preceding physical page and/or physical block as may occur in someprevious approaches.

In one or more embodiments, a number of blocks can be designated asspare blocks to reduce the amount of write amplification associated withwriting data in the memory array. A spare block may not be mapped tohost logical addresses and therefore may not be accessible by a hostsystem. A controller can write data, e.g., data updated from a differentblock, to a spare block before erasing the different block. When thedifferent block is erased, it can become the new spare block. Forexample, if a device has 100,000 LBAs, it may report fewer than 100,000LBAs to a host and use the difference for internal use, e.g., internaluse by a controller. Write amplification is a process that occurs whenwriting data to solid state memory arrays. When randomly writing data ina memory array, the memory array scans for free space in the array. Freespace in a memory array can be individual cells, pages, and/or blocks ofmemory cells that are not programmed. If there is enough free space towrite the data, then the data is written to the free space in the memoryarray. If there is not enough free space in one location, the data inthe memory array is rearranged by erasing, moving, and rewriting thedata that is already present in the memory array to a new locationleaving free space for the new data that is to be written in the memoryarray. The rearranging of old data in the memory array can be calledwrite amplification because the amount of writing the memory arrays hasto do in order to write new data is amplified based upon the amount offree space in the memory array and the size of the new data that is tobe written on the memory array. Write amplification can be reduced byincreasing the amount of space on a memory array that is designated asfree space (i.e., where static data will not be written), thus allowingfor less amplification of the amount of data that has to be writtenbecause less data will have to be rearranged.

In one or more embodiments, calculating and applying an offset to hostLBAs can be used to reduce the amount of write amplification and alsoreduce the amount of designated free space needed to control writeamplification to desired levels. Applying an offset to host LBAs cancause a memory array to be filled with data in an efficient manner,starting at the boundaries of physical block and pages, therefore a datastring in a formatted memory array will not start in the middle of aphysical block and/or page, thus decreasing the chance that the datastring will need to be rewritten to another location to free up space inthe memory array for new data.

In one or more embodiments, the system data and the user data that iswritten to the memory unit can be aligned with the physical structure ofthe memory unit. That is, data is written at the beginning of a physicalblock when writing to an erased block and data is written at thebeginning of a physical page when writing to an erased page. Also, insome embodiments, data will not be written to a partially written pageand the data will be written to the next available erased page.

CONCLUSION

The present disclosure includes methods, devices, and systems for alogical address offset. One method embodiment includes detecting amemory unit formatting operation. Subsequently, in response to detectingthe formatting operation, the method includes inspecting formatinformation on the memory unit, calculating a logical address offset,and applying the offset to a host logical address.

It will be understood that when an element is referred to as being “on,”“connected to” or “coupled with” another element, it can be directly on,connected to, or coupled with the other element or intervening elementsmay be present. In contrast, when an element is referred to as being“directly on,” “directly connected to” or “directly coupled with”another element, there are no intervening elements or layers present. Asused herein, the term “and/or” includes any and all combinations of oneor more of the associated listed items. As used herein the term “or,”unless otherwise noted, means logically inclusive or. That is, “A or B”can include (only A), (only B), or (both A and B). In other words, “A orB” can mean “A and/or B” or “one or more of A and B.”

It will be understood that, although the terms first, second, etc. maybe used herein to describe various elements and that these elementsshould not be limited by these terms. These terms are only used todistinguish one element from another element. Thus, a first elementcould be termed a second element without departing from the teachings ofthe present disclosure.

Although specific embodiments have been illustrated and describedherein, those of ordinary skill in the art will appreciate that anarrangement calculated to achieve the same results can be substitutedfor the specific embodiments shown. This disclosure is intended to coveradaptations or variations of one or more embodiments of the presentdisclosure. It is to be understood that the above description has beenmade in an illustrative fashion, and not a restrictive one. Combinationof the above embodiments, and other embodiments not specificallydescribed herein will be apparent to those of skill in the art uponreviewing the above description. The scope of the one or moreembodiments of the present disclosure includes other applications inwhich the above structures and methods are used. Therefore, the scope ofone or more embodiments of the present disclosure should be determinedwith reference to the appended claims, along with the full range ofequivalents to which such claims are entitled.

In the foregoing Detailed Description, some features are groupedtogether in a single embodiment for the purpose of streamlining thedisclosure. This method of disclosure is not to be interpreted asreflecting an intention that the disclosed embodiments of the presentdisclosure have to use more features than are expressly recited in eachclaim. Rather, as the following claims reflect, inventive subject matterlies in less than all features of a single disclosed embodiment. Thus,the following claims are hereby incorporated into the DetailedDescription, with each claim standing on its own as a separateembodiment.

What is claimed is:
 1. A method for operating a memory unit, comprising:detecting a memory unit formatting operation that formats the memoryunit with a file system; operating the memory unit with a defaultlogical address offset or an existing saved logical address offset priorto detecting the memory unit formatting operation; and calculating a newlogical address offset in response to detecting the formattingoperation.
 2. The method of claim 1, wherein the method includesapplying the new offset to a host logical address.
 3. The method ofclaim 2, wherein the new offset is equal to a difference in logicaladdresses between an end of a system data area and a beginning of asubsequent physical page of memory cells or a beginning of a subsequentphysical block of memory cells.
 4. The method of claim 2, wherein themethod includes: applying the new offset to a starting logical addressof the user data area; and aligning the new offset starting logicaladdress of the user data area with an allocation unit boundary of thefile system.
 5. The method of claim 4, wherein the method includescalculating a second offset to be applied to host logical addresses thatare within the system data area.
 6. The method of claim 1, wherein themethod includes inspecting format information on the memory unit inresponse to detecting the formatting operation.
 7. The method of claim6, wherein the method includes determining a starting logical address ofa user data area of the memory unit according to the format information.8. The method of claim 7, wherein the method includes applying a newlogical address offset to a host logical address that is equal to orgreater than the starting address of the user data area.
 9. The methodof claim 8, wherein applying the new offset to the host logical addressincludes adding the new offset to the logical address.
 10. The method ofclaim 8, wherein the method includes using the new offset until asubsequent memory unit formatting operation is detected.
 11. The methodof claim 1, wherein the method includes applying a new logical addressoffset to a starting logical address of a user data area; and wherein astarting logical address of the new offset corresponds to a beginning ofa physical page of memory cells or a beginning of a physical block ofmemory cells.
 12. The method of claim 1, wherein the method includesoperating the memory unit with the default logical address offset priorto detecting the memory unit formatting operation.
 13. The method ofclaim 12, wherein the default logical address offset is
 0. 14. A memorycontroller, comprising: control circuitry configured to: detect a memoryunit formatting operation that formats the memory unit with a filesystem; operate the memory unit with a default logical address offset oran existing saved logical address offset prior to detecting the memoryunit formatting operation; and calculate a new logical address offset inresponse to detecting the formatting operation.
 15. The memorycontroller of claim 14, wherein the control circuitry is configured to:inspect format information on the memory unit in response to detectingthe formatting operation; and determine a starting logical address of auser data area of the memory unit according to the format information.16. The memory controller of claim 14, wherein the control circuitry isconfigured to: apply the new offset to a host logical address.
 17. Thememory controller of claim 16, wherein the new offset as applied to astarting logical address of a user data area of the memory unitcorresponds to a beginning of a physical page of memory cells or abeginning of a physical block of memory cells.
 18. The memory controllerof claim 16, wherein the controller includes memory and the controlcircuitry is configured to store the new offset in the controllermemory.
 19. The memory controller of claim 18, wherein the controlcircuitry is configured to store the new offset until the controlcircuitry detects a subsequent formatting operation.
 20. The memorycontroller of claim 18, including an adder coupled to the non-volatilememory and to a memory unit interface, wherein the adder is configuredto add the new offset to the host logical address prior to the hostlogical address being sent across the memory unit interface.
 21. Thememory controller of claim 14, including a number of logical addressrange comparators configured to compare a host logical address with arange of logical addresses corresponding to a user data area of thememory unit to determine whether the host logical address is within theuser data area.
 22. A memory system, comprising: a memory unit; and amemory controller coupled to the memory unit, wherein the memorycontroller is configured to: detect a memory unit formatting operationthat formats the memory unit with a file system; operate the memory unitwith a default logical address offset or an existing saved logicaladdress offset prior to detecting the memory unit formatting operation;and subsequently, in response to detecting the formatting operation,calculate a new logical address offset.
 23. The memory system of claim22, wherein, in response to detecting the formatting operation, thecontroller is configured to: inspect format information on the memoryunit; and determine a starting logical address of a user data area ofthe memory unit according to the format information.
 24. The memorysystem of claim 23, wherein the memory controller is configured toinspect the format information from a partition boot record of a systemdata area of the memory unit.
 25. The memory system of claim 23, whereinthe starting logical address of the user data area is aligned with anallocation unit boundary of the file system.
 26. The memory system ofclaim 25, wherein the allocation unit boundary of the file systemcomprises a cluster boundary.
 27. The memory system of claim 23,wherein, in response to detecting the formatting operation, thecontroller is configured to apply the new logical address offset to astarting logical address of a user data area of the memory unitcorresponding to a beginning of a physical page of memory cells or abeginning of a physical block of memory cells.
 28. The memory system ofclaim 22, wherein, in response to detecting the formatting operation,the controller is configured to: apply the first logical address offsetto a host logical address.
 29. The memory system of claim 22, wherein:the memory unit comprises a number of flash memory arrays; the memorysystem includes a host interface connector coupled to the memorycontroller; and the host interface connector, the memory unit, and thememory controller are part of a discrete module.
 30. The memory systemof claim 22, wherein the memory system comprises a solid state drive.31. The memory system of claim 22, wherein the memory controller isconfigured to operate the memory unit with the default logical addressoffset before the memory controller detects a memory unit formattingoperation.